package com.icinfo.cloud.provider.punish.api.client.fastcase;

import com.icinfo.cloud.provider.peripheralinterface.regulatory.vo.PunishItemVo;
import com.icinfo.cloud.provider.punish.fastcase.dto.FastCaseRegisterInfoQueryDto;
import com.icinfo.cloud.provider.punish.fastcase.dto.FastCaseRegisterOperateDto;
import com.icinfo.cloud.provider.punish.fastcase.dto.FastCaseRegisterSaveDto;
import com.icinfo.cloud.provider.punish.fastcase.dto.FastTipsQueryDto;
import com.icinfo.cloud.provider.punish.fastcase.vo.FastAutoCloseCaseReminderVo;
import com.icinfo.cloud.provider.punish.fastcase.vo.FastCaseNoticeDocumentVo;
import com.icinfo.cloud.provider.punish.fastcase.vo.FastCaseRegisterInfoVo;
import com.icinfo.cloud.provider.punish.ucase.caseregister.vo.CaseRegisterSaveVo;
import com.icinfo.framework.common.web.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;


/**
 * 【V1.12.1】描述：简案快办客户端接口
 *
 * @Author zhengqiang
 * @Date 2023/8/18 15:41
 **/
@FeignClient(value = "${unified-punish-case-provider.namespace:}unified-punish-case-provider", contextId = "FastCaseRegisterClient")
public interface FastCaseRegisterClient {

    /**
     * 【V1.12.1】描述：简案快办立案登记
     *
     * @author: zhengqiang
     * @date: 2023/8/16
     * @param: saveDto
     * @return {@link Result <  CaseRegisterSaveVo >}
     **/
    @PostMapping(value = "/punish/fast/case/register/saveFastCaseRegister")
    Result<CaseRegisterSaveVo> saveFastCaseRegister(@RequestBody @Validated FastCaseRegisterSaveDto saveDto);

    /**
     * 【V1.12.1】描述： 查询简案快办暂存数据
     *
     * @author: zhengqiang
     * @date: 2023/8/17
     * @param: queryDto
     * @return {@link Result<  FastCaseRegisterInfoVo >}
     **/
    @PostMapping(value = "/punish/fast/case/register/getFastCaseRegisterInfo")
    Result<FastCaseRegisterInfoVo> getFastCaseRegisterInfo(@RequestBody @Validated FastCaseRegisterInfoQueryDto queryDto);

    /**
     * 【V1.12.1】描述： 获取简案快办告知书
     *
     * @author: zhengqiang
     * @date: 2023/8/17
     * @param: dto
     * @return {@link Result<  FastCaseNoticeDocumentVo >}
     **/
    @PostMapping("/punish/fast/case/register/getFastCaseNoticeDocument")
    Result<FastCaseNoticeDocumentVo> getFastCaseNoticeDocument(@RequestBody @Validated FastCaseRegisterInfoQueryDto dto);

    /**
     * 【V1.12.1】描述： 查询简案快办提示
     *
     * @author: zhengqiang
     * @date: 2023/8/17
     * @param: dto
     * @return {@link Result< String>}
     **/
    @PostMapping("/punish/fast/case/register/getFastTipsByListCodeAndOrgCode")
    Result<String> getFastTipsByListCodeAndOrgCode(@RequestBody @Validated FastTipsQueryDto dto);

    /**
     * 【V1.12.1】描述： 快办告知步骤操作(上一步,下一步)
     *
     * @author: zhengqiang
     * @date: 2023/8/18
     * @param: dto
     * @return {@link Result}
     **/
    @PostMapping("/punish/fast/case/register/saveFastInformOperateStep")
   Result<String> saveFastInformOperateStep(@RequestBody @Validated FastCaseRegisterOperateDto dto);

    /**
     * 【V1.12.1】描述： 获取简案快办处罚事项
     *
     * @author: zhengqiang
     * @date: 2023/8/23
     * @param: orgCode
     * @return {@link Result<  List <  Map >>}
     **/
    @GetMapping("/punish/fast/case/register/getFastAuditPubishTreeByOrgCode")
    Result<List<PunishItemVo>> getFastAuditPubishTreeByOrgCode(@RequestParam("orgCode") String orgCode);

    /**
     * 【V1.12.1】描述： 获取自动结案提醒
     *
     * @author: zhengqiang
     * @date: 2023/8/24
     * @param: caseId
     * @return {@link Result<  FastAutoCloseCaseReminderVo >}
     **/
    @GetMapping("/punish/fast/case/register/getAutoCloseCaseReminder")
    Result<FastAutoCloseCaseReminderVo> getAutoCloseCaseReminder(@RequestParam("caseId") String caseId);

}
